<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>3-对象指针或者对象原型__proto__</title>
	</head>
	<body>
		<script type="text/javascript">
			/**
			 * 定义构造函数
			 * @param {Object} brand
			 * @param {Object} price
			 */
			function Mobile(brand,price){
				this.brand = brand;
				this.price = price;
			}
			//在原型对象prototype上挂载方法
			Mobile.prototype.sendmsg=function(){
				console.log('发短信...');
			}
			
			var hw = new Mobile('华为p30',2999);
			hw.sendmsg();
			// console.dir(Mobile);
			// console.log(hw);
			//原型对象的属性prototype
			console.log(Mobile.prototype);
			//对象原型属性__proto__
			console.log(hw.__proto__);
			console.log(Mobile.prototype===hw.__proto__);
			
			//原型对象的构造函数
			console.log(Mobile.prototype.constructor);
			//对象原型构造函数
			console.log(hw.__proto__.constructor);
			
			/**
			 * 为什么实例化构造函数得到的对象hw能够访问原型对象属性定义的方法？
			 * 解释如下：
			 * 实例化构造函数得到的hw对象，在它里面有一个指针__proto__，它呢会指向原型对象的构造函数
			 * 所以在原型对象属性上挂载了相关方法，实例化对象就可以访问相关方法
			 */
		</script>
	</body>
</html>